<?php
/**
 * Created by PhpStorm.
 * User: MarcosAlex
 * Date: 23/07/14
 * Time: 08:55
 */

    //converte do formato americano para o formato brasileiro
   function datatoBR ($data){
       if (!empty($data) && $data != ""){
           $data = explode("-", $data);
           return $data[2]."/".$data[1]."/".$data[0];
       } else {
           return "";
       }
   }

    //converte do formato brasileiro para o formato americano
    function datatoEN ($data){
        if (!empty($data) && $data != ""){
        $data = explode("/", $data);
        return @$data[2]."-".@$data[1]."-".@$data[0];
        } else {
            return "";
        }
    }


    // função que retorna de um select o id do mês para utilizar em querys.
    function mesToId($mes){
        if($mes== "JANEIRO"){
                return '01';
        } else if ($mes == "FEVEREIRO"){
            return '02';
        } else if ($mes == "MARÇO"){
            return '03';
        }else if ($mes == "ABRIL"){
            return '04';
        }else if ($mes == "MAIO"){
            return '05';
        }else if ($mes == "JUNHO"){
            return '06';
        }else if ($mes == "JULHO"){
            return '07';
        }else if ($mes == "AGOSTO"){
            return '08';
        }else if ($mes == "SETEMBRO"){
            return '09';
        }else if ($mes == "OUTUBRO"){
            return '10';
        }else if ($mes == "NOVEMBRO"){
            return '11';
        }else if ($mes == "DEZEMBRO"){
            return '12';
        }else if ($mes == "Escolha o mês"){
            return date("m");
        }
    }

//converte folhaPonto em minutos.
function horasToMinutos($hora){
    $soma = 0;
    if(( !empty($hora) ) && ( trim($hora) != "" )){
        $hora = explode(":", $hora);
        if($hora[1] == "00"){
            $soma = ($hora[0] * 60) + $hora[1];

        }
        if(trim($hora[0] != "")){
        $soma = ($hora[0] * 60) + $hora[1];
        }

        return $soma;

    } else {

        return $soma;
    }
}

function minutosToHoras($minutos){
    $horas = $minutos/60;
    $horas = number_format($horas, 2);
    $horas = explode(".", $horas);
    if($horas[1] != 0){
        $horas[1] = ($horas[1]*60) / 100; // converter os minutos em formato Horas
        $horas[1] = number_format($horas[1],0); // foi necessário arredondar o valor dos minutos para não apresentar valores quebrados no relatório
    }
    $resultado = $horas[0].":".$horas[1];
    return $resultado;
}


//FUNCÃO QUE CALCULA A DIFERANÇA DAS HORAS TRABALHADAS COM A CARGA HORÁRIO DO CONTRATADO
function calculaBancoHoras($descricaoDia , $hora1, $cargaHoraria){
    if ($descricaoDia == 1){
        $hora1 = horasToMinutos($hora1);
        $cargaHoraria = horasToMinutos($cargaHoraria);
        $totalHoras =  ($hora1 - $cargaHoraria)/60;
        //SE FOR MENOR QUE ZERO, QUER DIZER QUE NÃO HÁ BANCO DE HORAS E SIM HORAS DEVEDORAS.
        if ($totalHoras > 0){
            $totalHoras = number_format($totalHoras,2); // para que contenha duas casas decimais
            $totalHoras = explode(".", $totalHoras); // separar folhaPonto de minutos.

            if ($totalHoras[1] != 00){
                $totalHoras[1] = ($totalHoras[1]*60) / 100; // converter os minutos em formato Horas
                $totalHoras[1] = number_format($totalHoras[1],0); // foi necessário arredondar o valor dos minutos para não apresentar valores quebrados no relatório
            }

            //CONCATENANDO PARA O FORMATO DE HORAS.
           $resultado = $totalHoras[0].":".$totalHoras[1];
           return $resultado;
        } else{
           return "";
        }

    }else{
        return false;
    }
}

//FUNÇÃO QUE CALCULA AS HORAS DEVEDORAS DO CONTRATADO
function calculaHorasDevedoras($descricaoDia, $totalHoras, $cargaHoraria, $ferias){
    if ($descricaoDia == 1){
        $horasDevedoras =  ((horasToMinutos($totalHoras)) - (horasToMinutos($cargaHoraria))) /60; // calculando a diferença entre eles
        if (($horasDevedoras < 0) && $totalHoras != 0){ // se for negativo entrará para o folhaPonto devedoras
            $horasDevedoras = $horasDevedoras * -1; // deixando positivo para que no relatório não apresente o sinal de negativo
            $horasDevedoras = number_format($horasDevedoras,2); // para que contenha duas casas decimais
            $horasDevedoras = explode(".", $horasDevedoras); // separar folhaPonto de minutos.

            if ($horasDevedoras[1] != 00){
                $horasDevedoras[1] = ($horasDevedoras[1]*60) / 100; // converter os minutos em formato Horas
                $horasDevedoras[1] = number_format($horasDevedoras[1],0); // foi necessário arredondar o valor dos minutos para não apresentar valores quebrados no relatório
            }
            $resultado = $horasDevedoras[0].":".$horasDevedoras[1];
            return $resultado;
        } else if ($ferias == true){
            return "";
        }else if (horasToMinutos($totalHoras) == "0") {
            return $cargaHoraria;
        }
    }
}

// estava função verifica as folhaPonto de entrada e saída. Caso a data seja um Sábado, automaticamente a quantidade total de folhaPonto será 50%
function calcula50($diaSemana, $bancoHoras, $horasTrabalhadas, $descricaoDia){
    if ($descricaoDia == 1){
        $resultado = $bancoHoras;
    } else if ($diaSemana == "Sábado" && $horasTrabalhadas != ""){
        $resultado = $horasTrabalhadas;
    } else {
        $resultado = "";
    }

    return $resultado;
}


function calcula100($diaSemana, $totalHoras, $descricaoDia){
    if ($diaSemana == "Domingo" || $descricaoDia == 3){
        return $totalHoras;
    }
}



function calculaAdicionalNoturno($diaSemana, $totalHoras, $arrayHoras){


    if(is_array($arrayHoras)){
        $resultado = 0;

        for ($i = 0; $i < count($arrayHoras); $i = $i+2){

            $horaEntrada = horasToMinutos($arrayHoras[$i]);
            $horaSaida = horasToMinutos($arrayHoras[$i+1]);

            if(trim($horaEntrada) != ""){
                if (($horaEntrada >= 1320 && $horaEntrada <= 1439) || ($horaSaida >=0 && $horaEntrada <= 360)){
                    if (($horaSaida >= 1320 && $horaSaida <= 1439) || ($horaSaida >=0 && $horaSaida <= 360)){
                        $resultado =  $resultado +  ($horaSaida -$horaEntrada);

                    } else {
                        $resultado =  $resultado +  (360 -$horaEntrada);

                    }

                } else  if (($horaSaida > 1320 && $horaSaida <= 1439) || ($horaSaida >=0 && $horaSaida <= 360)){
                    $resultado = $resultado + ($horaSaida -1320);
                }
            }
        }

       if (minutosToHoras($resultado) != "0:00"){
        return minutosToHoras($resultado);
       }
    }


}
// esta função recebe os dados de entrada e saída e faz o calculo da quantidade de folhaPonto trabalhadas no dia.
function calculaTotalHoras ($entrada1, $saida1, $entrada2, $saida2, $entrada3, $saida3, $entrada4, $saida4, $entrada5, $saida5, $entrada6, $saida6){
    $totalHoras =  (($saida1 - $entrada1)+
                    ($saida2 - $entrada2)+
                    ($saida3 - $entrada3)+
                    ($saida4 - $entrada4)+
                    ($saida5 - $entrada5)+
                    ($saida6 - $entrada6));
    $retultado = minutosToHoras($totalHoras);
    if ( $retultado == "0:00"){
      return "";
    } else {
        return $retultado;
    }
}

// funcão que separa os números de letras da matriculas dos funcionarios. Exemplo: CTS-123 ficaria array{CTS , 123}
function separaMatricula ($numeromatricula){
    if(!is_numeric($numeromatricula)){
    $numeromatricula = explode("-", $numeromatricula);
    }
    return $numeromatricula[1];
}


function diaSemana ($data){
    $ano =  substr("$data", 0, 4);
    $mes =  substr("$data", 5, -3);
    $dia =  substr("$data", 8, 9);

    $diasemana = date("w", mktime(0,0,0,$mes,$dia,$ano) );

    switch($diasemana) {
        case"0": $diasemana = "Domingo";       break;
        case"1": $diasemana = "Segunda-Feira"; break;
        case"2": $diasemana = "Terça-Feira";   break;
        case"3": $diasemana = "Quarta-Feira";  break;
        case"4": $diasemana = "Quinta-Feira";  break;
        case"5": $diasemana = "Sexta-Feira";   break;
        case"6": $diasemana = "Sábado";        break;
    }
    return $diasemana;
}



//FUNÇÃO UTILIZADA PARA CALCULAR A DIFERENÇA DE DIAS ENTRE DUAS DATAS
function quant_dias($data1, $data2){
    return round((strtotime($data2) -
            strtotime($data1)) / (24 * 60 * 60), 0);
}



